1. Field of the Invention
The present invention relates to architectures of network adapters, and particularly to managing indication and/or interrupt signals to a host system.
2. Description of Related Art
Network adapters involved in the transfer of data between a communications network and a host computer system typically must notify the host system of asynchronous events. In many circumstances, the host processor must take some action based on these asynchronous events. For example, if the network adapter has begun receiving a data frame, the host processor may want to know when a complete data frame has been received. Moreover, the host processor may require notification of the completion of the transfer of the data frame from the network adapter buffer memory to the host computer system.
Likewise, with respect to the transmission path, the host processor may also require notification of the completion of a download from the host system to the network adapter buffer memory as well as notification that a transmission from the network adapter buffer memory onto the communications network has been completed.
In related art systems, such as the National Semiconductor DP83932B, a systems-oriented network interface controller (SONIC) and the Intel 82586 local area network co-processor, an interrupt is generated by the network adapter to the host processor signaling an asynchronous event. The host processor then must determine the cause of the interrupt by examining the appropriate network adapter status registers and take the appropriate action in an interrupt service routine.
For example, if the host driver determines from the network adapter status register that a data frame has been received, the host driver calls a frame reception subroutine. However once the subroutine is called, most host driver frame reception subroutines can not be called again or re-entered. Therefore, interrupts which cause the host driver to call the frame reception subroutine must be disabled during at least the frame reception subroutine.
Prior art network adapters disable interrupts by using a mask register to mask interrupts; however, the masking of interrupts prevents the host from knowing that a second asynchronous event occurred during an interrupt service routine which was generated by a first asynchronous event. Even though an interrupt may not be desirable at a given time in an interrupt service routine, the host driver may still desire indication that the second event occurred in order to service the second event in only one interrupt service routine. For example, while interrupts should be disabled during a frame reception subroutine, the host driver would still be able to service a second frame which was received during the frame reception subroutine if the host driver was able to know that a second frame was received after exiting the frame reception subroutine but before exiting the interrupt service routine. Nevertheless, the present systems only offer one level of status information which generates interrupts. The single level of status information does not allow the host to know that other asynchronous events occurred during a single interrupt service routine causing additional interrupts to the host degrading host/network adapter performance.
In addition, a host subroutine may require interrupts to be disabled while calling another host subroutine which also requires interrupts to be disabled. For example, the host processor may be transferring data to the network adapter in a frame transferring subroutine which requires that interrupts be disabled when the network adapter must send a network adapter health status signal across the network. The host processor must call a health status subroutine within the frame transferring subroutine which also requires interrupts to be disabled. If the health status subroutine simply enables interrupts upon exiting the subroutine by an explicit software command, interrupts will be allowed to occur in the frame transferring subroutine. Therefore, additional host software is required which keeps track of the disabling and enabling of interrupts during various subroutines rather than allowing the network adapter to count the number of enabling and disabling commands.
Therefore, it is desirable to provide a network adapter with managed indication and interrupt signals which allows the host system to select which interrupts and which indication signals of asynchronous events will be generated to the host at a given time. Moreover, a network adapter which automatically disables and/or enables interrupts with and without explicit and additional host software commands in host subroutines is desirable.